Skip to content

[GITHUB] Update build-toolchain to use public VC6 from itsmattkc repo #931

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

fbraz3
Copy link

@fbraz3 fbraz3 commented May 24, 2025

This pull request updates the build workflow to download the VC6 toolchain from a public repository.

Key changes:

  • Uses the public itsmattkc/MSVC600 repository to fetch the VC6 portable toolchain.
  • Removes the need to maintain or use any secrets for toolchain downloads in CI builds.
  • Simplifies maintenance and improves transparency for all contributors.

This change makes the build process more secure and easier to reproduce for everyone.

TODO

  • Check if produced executable files are identical

@xezon xezon requested a review from tintinhamans May 24, 2025 19:23
@xezon xezon added Minor Severity: Minor < Major < Critical < Blocker Build Anything related to building, compiling labels May 24, 2025
shell: pwsh
run: |
Write-Host "Downloading VC6 Portable Installation" -ForegroundColor Cyan
aws s3 cp s3://github-ci/VS6_VisualStudio6.7z VS6_VisualStudio6.7z --endpoint-url $env:AWS_ENDPOINT_URL
Invoke-WebRequest -Uri https://github.com/itsmattkc/MSVC600/archive/refs/heads/master.zip -OutFile VS6_VisualStudio6.zip
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If itsmattkc takes the repo private, then this breaks. Are we allowed to fork this repository or is this illegal?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are already several forks of this repository. If itsmattkc decides to make the repository private or remove it, we can simply switch to another existing fork. Alternatively, we could revert to using the AWS backup if necessary.

https://github.com/itsmattkc/MSVC600/forks?include=active%2Cinactive%2Cnetwork&page=1&period=&sort_by=stargazer_counts

But realistically, this repository has been public for almost five years, and we are talking about end-of-life software. I find it unlikely that it will be taken down at this point.

Regarding the legality of keeping a fork, I am not a lawyer, but as far as I know, simply maintaining a fork of freely distributed executables—without modifying or hacking the binaries—should not be illegal. However, if there are any concerns, we should seek legal advice to be certain.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If allowed, Superhackers should make their own fork

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess allowed would be based on whatever Microsoft says no? As it is their software, don't know if you still need a license for VS6. If you don't then we could just create our own repo and not even fork this one.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it would probably be better to have our own repo, that ways it's easier for people to get hold of a copy for local use as well and it keeps dependencies within the project as much as possible.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can do that if someone can find out if that is ok to do.

Copy link
Author

@fbraz3 fbraz3 May 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In legal terms what’s the difference between get vs6 from an s3 bucket and get it from any public repo?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What i can read me to, it looks like we would need a license and run the script locally. I believe the actions run on @tintinhamans's home server? So that should have the license?

@xezon xezon requested a review from OmniBlade June 23, 2025 20:37
@xezon
Copy link

xezon commented Jun 23, 2025

@OmniBlade what are your thoughts on this?

@OmniBlade
Copy link

It does make it easier to do builds in our own forks, I'd be inclined to go with it and we either revert/fix it if the repo goes down and hope we don't need VC6 by the time that happens. Github is owned by Microsoft so while someone has directed their infrastructure to create the repo, its being served from Microsoft infrastructure to be run on Microsoft infrastructure. At worst they would just stop it if they took issue with it and its not really any different from what we are doing now? Probably legally more in the clear that having Amazons infrastructure provide copies, but still clear as mud.

@Skaronator
Copy link

As mentioned, this would be really useful to run the CI in our own forks. Worst case would be we have to fix the CI if the source repository actually goes down, which I agree is very unlikely.

The long-term plan is probably to drop VC6 altogether and move forward with VC2022, right?

@aliendroid1
Copy link

As mentioned, this would be really useful to run the CI in our own forks. Worst case would be we have to fix the CI if the source repository actually goes down, which I agree is very unlikely.

The long-term plan is probably to drop VC6 altogether and move forward with VC2022, right?

yes, therefore we shouldn't bother making our own fork/clone of the vc6 portable repo

@xezon
Copy link

xezon commented Jul 7, 2025

Ok. Shall we create a fork of itsmattkc in this organization and then link to that?

@aliendroid1
Copy link

Ok. Shall we create a fork of itsmattkc in this organization and then link to that?

No. Thats additional liability for us and not worth avoiding the small risk that the itsmattkc repo gets deleted before we drop vc6.

worst case scenario even if it does get deleted, its not hard to mitigate. We can just use another repo or fallback to our current method

xezon
xezon previously approved these changes Jul 7, 2025
@xezon
Copy link

xezon commented Jul 7, 2025

Why is this branch not buildings anything? The CI is not triggered.

Please rebase and push this branch.

@xezon xezon dismissed their stale review July 7, 2025 21:25

CI is not working.

@xezon xezon self-requested a review July 7, 2025 21:26
@fbraz3
Copy link
Author

fbraz3 commented Jul 9, 2025

Why is this branch not buildings anything? The CI is not triggered.

Please rebase and push this branch.

Done!

shell: pwsh
run: |
Write-Host "Downloading VC6 Portable Installation" -ForegroundColor Cyan
aws s3 cp s3://github-ci/VS6_VisualStudio6.7z VS6_VisualStudio6.7z --endpoint-url $env:AWS_ENDPOINT_URL
Invoke-WebRequest -Uri https://github.com/itsmattkc/MSVC600/archive/refs/heads/master.zip -OutFile VS6_VisualStudio6.zip
Copy link

@xezon xezon Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tomsons26

Regarding vs6 download change, I don't see masm in that repo, that probably isn't sp6 but rtm
[It would mean] Nonmatching codegen, possible new issues cause of compiler bugs fixed in service packs

Copy link

@xezon xezon Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we please make a binary diff of itsmattkc SP6 with our current SP6?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

itsmattkc/MSVC600@001c4ba

"upgraded to professional edition sp6"

It claims to be SP6

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i checked c1.dll and the version number is 12.0.9782.0 which is the SP6 version

it says its a "Portable download of Microsoft Visual C++ 6.0 command line tools."
Thats why it doesn't have all the files

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I compated against OmniBlades portable version:

Mismatching files are

BSCMAKE.EXE	77886	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	77886	BSCMAKE.EXE
CVPACK.EXE	81979	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	81979	CVPACK.EXE
FCOUNT.BAT	169	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	178	FCOUNT.BAT
FCOVER.BAT	169	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	178	FCOVER.BAT
FTIME.BAT	169	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	178	FTIME.BAT
LCOUNT.BAT	348	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	359	LCOUNT.BAT
LCOVER.BAT	489	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	502	LCOVER.BAT
MAPSYM.EXE	39184	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	39184	MAPSYM.EXE
MC.EXE	25872	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	25872	MC.EXE
MIDL.EXE	673616	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	673616	MIDL.EXE
MKTYPLIB.EXE	91136	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	91136	MKTYPLIB.EXE
PLIST.EXE	61498	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	61498	PLIST.EXE
PREP.EXE	77880	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	77880	PREP.EXE
PROFILE.DLL	94270	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	94270	PROFILE.DLL
PROFILE.EXE	41022	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	41022	PROFILE.EXE
PROFILER.INI	2528	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	2658	PROFILER.INI
REBASE.EXE	59664	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	59664	REBASE.EXE
VCVARS32.BAT	954	2022.06.04 06:04:32	!=	2024.02.05 16:19:58	989	VCVARS32.BAT
Include\
RPCPROXY.H	19006	2022.06.04 06:04:32	!=	2024.02.05 16:20:00	19007	RPCPROXY.H
WINNT.H	252068	2022.06.04 06:04:32	!=	2024.02.05 16:20:00	245610	WINNT.H
WINPERF.H	28649	2022.06.04 06:04:32	!=	2024.02.05 16:20:00	28650	WINPERF.H
Lib\
MSJAVA.LIB	549908	2022.06.04 06:04:32	!=	2024.02.05 16:20:01	226694	MSJAVA.LIB
MFC\SRC\
MFCINTL.MAK	4161	2022.06.04 06:04:32	!=	2024.02.05 16:20:02	4312	MFCINTL.MAK
MFCISAPI.MAK	6375	2022.06.04 06:04:32	!=	2024.02.05 16:20:02	6721	MFCISAPI.MAK

Missing files are

2024.02.05 16:20:03	513536	MasmRef.doc
2024.02.05 16:20:03	227307	procpack.chm
2024.02.05 16:20:03	22709	PPreadme.htm
Bin\
2024.02.05 16:19:58	21880	h2inc.err
2024.02.05 16:19:58	249344	h2inc.exe
2024.02.05 16:19:58	9687	ml.err
2024.02.05 16:19:58	385072	ml.exe
2024.02.05 16:19:58	180276	MSPDB60.DLL
Samples\Amd\Asdk\
2024.02.05 16:20:03	6725	adetect.h
2024.02.05 16:20:03	4534	adsp.h
2024.02.05 16:20:03	3353	amath.h
2024.02.05 16:20:03	2667	amatrix.h
2024.02.05 16:20:03	52438	amd3dx.h
2024.02.05 16:20:03	2097	amdlib.h
2024.02.05 16:20:03	3610	aquat.h
2024.02.05 16:20:03	3296	atrans.h
2024.02.05 16:20:03	3181	avector.h
2024.02.05 16:20:03	20575	detect.cpp
2024.02.05 16:20:03	15772	dsp_lib.cpp
2024.02.05 16:20:03	40781	idsp.cpp
2024.02.05 16:20:03	58188	imath.cpp
2024.02.05 16:20:03	27889	imatrx.cpp
2024.02.05 16:20:03	33664	iquat.cpp
2024.02.05 16:20:03	23507	itrans.cpp
2024.02.05 16:20:03	13042	ivect.cpp
2024.02.05 16:20:03	20939	math_lib.cpp
2024.02.05 16:20:03	16273	matrx_lib.cpp
2024.02.05 16:20:03	20466	quat_lib.cpp
2024.02.05 16:20:03	31119	testlib.cpp
2024.02.05 16:20:03	8089	trans_lib.cpp
2024.02.05 16:20:03	7998	vect_lib.cpp
Samples\Amd\Isdk\
2024.02.05 16:20:03	6725	adetect.h
2024.02.05 16:20:03	4532	adsp.h
2024.02.05 16:20:03	3457	amath.h
2024.02.05 16:20:03	2668	amatrix.h
2024.02.05 16:20:03	3610	aquat.h
2024.02.05 16:20:03	3296	atrans.h
2024.02.05 16:20:03	3181	avector.h
2024.02.05 16:20:03	20575	detect.cpp
2024.02.05 16:20:03	15723	dsp_lib.cpp
2024.02.05 16:20:03	35084	idsp.cpp
2024.02.05 16:20:03	58053	imath.cpp
2024.02.05 16:20:03	32369	imatrx.cpp
2024.02.05 16:20:03	2022	intrinsics.h
2024.02.05 16:20:03	27418	iquat.cpp
2024.02.05 16:20:03	22015	itrans.cpp
2024.02.05 16:20:03	11529	ivect.cpp
2024.02.05 16:20:03	20934	math_lib.cpp
2024.02.05 16:20:03	16273	matrx_lib.cpp
2024.02.05 16:20:03	20466	quat_lib.cpp
2024.02.05 16:20:03	31197	testlib.cpp
2024.02.05 16:20:03	8089	trans_lib.cpp
2024.02.05 16:20:03	7976	vect_lib.cpp
Samples\CPUID\
2024.02.05 16:20:03	8967	cpuid.c
2024.02.05 16:20:03	1041	cpuid.h
2024.02.05 16:20:03	859	main.c

Is this alright?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@aliendroid1 @xezon just for the records, i have this patch running under my fork.

The last build results:
https://github.com/fbraz3/GeneralsGameCode/actions/runs/16178498437

Execution logs:
Generals
GeneralsMD

Copy link

@aliendroid1 aliendroid1 Jul 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thats awesome cuz I had been trying so hard to get it to work without mspdb60.pdb. I want to figure out what makes this version work without it but not mine

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest we make binary comparison of the generated executables with the current VC6 and the new VC6. If they match, then it should be all good.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sigh, xeson's report is wrong. mspdb60.dll actually is not missing and is in fact in the itsmackrepo at it's default location.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like some files are in different folders, so they show as missing.

@xezon
Copy link

xezon commented Jul 16, 2025

So we need to check if the produced executable files are identical to before. If yes, then this is safe.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Build Anything related to building, compiling Minor Severity: Minor < Major < Critical < Blocker
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants